<html>
  <head>
    <title>
        监控分布式事件
    </title>
  </head>
  <body>
    <script>
      /*
                        四、监控分布式事件
                        
                                    ABP允许你在应用程序"发布" 或 "接收" 分布式事件时随时了解事件的情况。

                                    此功能使你能够跟踪应用程序之之间的事件流，并根据接收或发送的分布式事件采取适当的操作。


                                    1、接收事件()
                                            
                                            DistributedEventReceived abp内置本地事件类型,当本地应用程序从分布式事件总管接收到事件时触发此事件，可用于一些监控操作。

                                            DistributedEventReceived本地事件会在应用程序从分布式事件总线接收到事件时被触发。

                                            DistributedEventReceived事件类具有以下字段：

                                                ①、Source：    它代表分布式事件的来源。来源可以是Direct、Inbox、Outbox

                                                ②、EventName： 表示接收到的事件的名称。

                                                ③、EventData：  它表示与接收到的事件关联的实际数据。由于它是object类型，因此它可以保存任何类型的数据。

                                            eg: 当你的应用程序从分布式事件总线接收到事件时获得通知

                                                // 订阅、处理 接收分布式事件的本地事件
                                                public class DistributedEventReceivedHandler : ILocalEventHandler<DistributedEventReceived>, ITransientDependency
                                                {
                                                    public async Task HandleEventAsync(DistributedEventReceived eventData)
                                                    {
                                                        // TODO: IMPLEMENT YOUR LOGIC...
                                                    }
                                                }


                                    2、发送事件

                                            DistributedEventSent abp内置本地事件类型，当本地应用程序向分布式事件总线发送事件时触发此事件，可用于一些监控事件发送的操作。

                                            DistributedEventSent类具有以下字段：

                                                ①、Source：它代表分布式事件的来源。来源可以是Direct、Inbox、Outbox

                                                ②、EventName：它代表发送的事件的名称。

                                                ③、EventData：它表示与发送的事件关联的实际数据。由于它是object类型，因此它可以保存任何类型的数据

                                                eg: 当你的应用程序将事件发送到分布式事件总线时获得通知：

                                                    // 订阅、处理 发送分布式事件的本地事件
                                                    public class DistributedEventSentHandler : ILocalEventHandler<DistributedEventSent>, ITransientDependency
                                                    {
                                                        public async Task HandleEventAsync(DistributedEventSent eventData) // 事件数据
                                                        {
                                                            // TODO: IMPLEMENT YOUR LOGIC...
                                                        }
                                                    }

                                    通过订阅 DistributedEventSent 和 DistributedEventReceived 这两个ABP内置本地事件，你可以将对分布式事件的跟踪功能无缝集成到你的应用程序中。

                                    这是你能够有效的监控消息传递流，诊断任何潜在问题，并获得对分布式消息传递系统行为的宝贵见解。
                    */
    </script>
  </body>
</html>